package com.leetcode;

import java.util.ArrayList;
import java.util.List;

//将一个给定字符串 s 根据给定的行数 numRows ，以从上往下、从左到右进行 Z 字形排列。
//
// 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时，排列如下：
//
//
//P   A   H   N
//A P L S I I G
//Y   I   R
public class No6 {
    public String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }
        boolean down = false;
        int index = 0;
        List<StringBuilder> list = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            list.add(new StringBuilder());
        }
        for (int i = 0; i < s.length(); i++) {
            list.get(index).append(s.charAt(i));
            if (index == 0 || index == numRows - 1) {
                down = !down;
            }
            index = down ? index + 1 : index - 1;
        }
        StringBuilder sb = new StringBuilder();
        for (StringBuilder builder : list) {
            sb.append(builder);
        }
        return sb.toString();
    }
}
